home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 2333 < prev    next >
Encoding:
Text File  |  1996-08-05  |  2.7 KB  |  174 lines

  1. Path: mail2news.demon.co.uk!longbarn.demon.co.uk
  2. From: Peter Jones <pete@longbarn.demon.co.uk>
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Mouse Routines using C/C++
  5. Date: Sat, 20 Jan 1996 17:26:36 GMT
  6. Organization: None
  7. Message-ID: <327416772wnr@longbarn.demon.co.uk>
  8. Reply-To: pete@longbarn.demon.co.uk
  9. X-NNTP-Posting-Host: longbarn.demon.co.uk
  10. X-Broken-Date: Saturday, Jan 20, 1996 17.26.36
  11. X-Newsreader: Newswin Alpha 0.7
  12. X-Mail2News-Path: relay-4.mail.demon.net!post.demon.co.uk!longbarn.demon.co.uk
  13.  
  14. //Here's some C++ code for mice for DOS:
  15.  
  16. class Mouse
  17. {
  18. private:
  19.    int got_mouse,    // Mouse init flag.
  20.        num_buttons;  // # buttons on mouse.
  21. public:
  22.    Mouse(void);
  23.    ~Mouse(void);
  24.    int  GotMouse(void) {return got_mouse;}
  25.    void PutMouse(int x,int y);
  26.    void SetLimits(int minXLimit, int maxXLimit, int minYLimit, int maxYLimit);
  27.    void ShowMouse(void);
  28.    void HideMouse(void);
  29.    int Button(void);
  30.    int NumButtons(void) {return num_buttons;}
  31.    int WhereX(void);
  32.    int WhereY(void);
  33. };
  34.  
  35. Mouse::Mouse(void)
  36. {
  37.  got_mouse = 0;
  38.  int a,b;
  39.  _asm{
  40.   MOV    AX,0x0000
  41.   INT    33h
  42.   MOV   a,AX
  43.   MOV   b,BX
  44.  }
  45.  got_mouse=a;
  46.  num_buttons=b;
  47. }
  48.  
  49. Mouse::~Mouse(void)
  50. {
  51.  _asm{
  52.   MOV AX,0x0000
  53.   INT 33h
  54.  }
  55. }
  56.  
  57.  
  58. void Mouse::PutMouse(int x,int y)
  59. {
  60.  _asm{
  61.   MOV    AX,0x0004
  62.   MOV   CX,x
  63.   MOV   DX,y
  64.   INT    33h
  65.  }
  66. }
  67.  
  68. void Mouse::SetLimits(int minXLimit, int maxXLimit,
  69.               int minYLimit, int maxYLimit)
  70. {
  71.  _asm{
  72.   MOV    AX,0x0007
  73.   MOV   CX,minXLimit
  74.   MOV   DX,maxXLimit
  75.   INT    33h
  76.   MOV    AX,0x0008
  77.   MOV   CX,minYLimit
  78.   MOV   DX,maxYLimit
  79.   INT    33h
  80.  }
  81. }
  82.  
  83. void Mouse::ShowMouse(void)
  84. {
  85.  if (!got_mouse)
  86.   return;
  87.  _asm{
  88.   MOV    AX,0x0001
  89.   INT    33h
  90.  }
  91. }
  92.  
  93. void Mouse::HideMouse(void)
  94. {
  95.  if (!got_mouse)
  96.   return;
  97.  _asm{
  98.   MOV    AX,0x0002
  99.   INT    33h
  100.  }
  101. }
  102.  
  103. int Mouse::Button(void)
  104. {
  105.  int a;
  106.  _asm{
  107.   MOV   AX,0x0003
  108.   INT   33h
  109.   MOV   a,BX
  110.  }
  111.  return a;
  112. }
  113.  
  114. int Mouse::WhereX(void)
  115. {
  116.  int a;
  117.  _asm{
  118.   MOV   AX,0x0003
  119.   INT   33h
  120.   MOV   a,CX
  121.  }
  122.  return a;
  123. }
  124.  
  125. int Mouse::WhereY(void)
  126. {
  127.  int a;
  128.  _asm{
  129.   MOV   AX,0x0003
  130.   INT   33h
  131.   MOV   a,DX
  132.  }
  133.  return a;
  134. }
  135.  
  136. #include <conio.h>
  137.  
  138. int main(void)
  139. {
  140.  Mouse mouse;
  141.  
  142.  int    x,y;
  143.  
  144.  if(!mouse.GotMouse())
  145.  {
  146.   cprintf("No mouse found!");
  147.   return 1;
  148.  }
  149.  
  150.  mouse.ShowMouse();
  151.  
  152.  cprintf("%d buttons found\n\r",mouse.NumButtons());
  153.  
  154.  while(!mouse.Button())
  155.  {
  156.   cprintf("The mouse is at (%2d,%2d)\r",mouse.WhereX()/8,mouse.WhereY()/8);
  157. // Remember to divide any co-ords by 8 when in text mode.
  158.  }
  159.  
  160.  cprintf("\n\rButton pressed!");
  161.  
  162.  mouse.HideMouse();
  163.  
  164.  return 0;
  165. }
  166.  
  167. // I hope this is of some use.
  168.  
  169. -- 
  170. /-------------------------------------------------------------------------\
  171. | Peter Jones           pete@longbarn.demon.co.uk                         |
  172. \-------------------------------------------------------------------------/
  173.  
  174.